package com.weishuang.monitor.leader.controller;


import com.baomidou.mybatisplus.core.toolkit.IdWorker;
import com.github.pagehelper.Page;
import com.weishuang.monitor.leader.commons.entity.Result;
import com.weishuang.monitor.leader.commons.utils.ResultUtils;
import com.weishuang.monitor.leader.entity.ServersBaseInfo;
import com.weishuang.monitor.leader.entity.dto.ServersBaseInfoDTO;
import com.weishuang.monitor.leader.entity.vo.ServersBaseInfoVO;
import com.weishuang.monitor.leader.service.IServersBaseInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;

import java.util.UUID;

/**
 * <p>
 * 服务器基本信息表 前端控制器
 * </p>
 *
 * @author weishuang
 * @since 2021-03-23
 */
@RestController
@RequestMapping("/leader/serversBaseInfo")
public class ServersBaseInfoController {

    @Autowired
    private IServersBaseInfoService serversBaseInfoService;

    /**
     * 分页查询服务器信息
     * @param serversBaseInfoDTO
     * @return
     */
    @GetMapping("listPage")
    public Result listPage(ServersBaseInfoDTO serversBaseInfoDTO) {
        Page<ServersBaseInfoVO> result = serversBaseInfoService.listPage(serversBaseInfoDTO);
        return ResultUtils.success(result);
    }

    /**
     * 新增服务器信息
     * @param serversBaseInfo
     * @return
     */
    @PostMapping
    public Result addServer(@Validated ServersBaseInfo serversBaseInfo) {
        serversBaseInfo.setId(IdWorker.getIdStr());
        serversBaseInfo.setSecret(UUID.randomUUID().toString().replace("-", ""));
        serversBaseInfo.insertInit();
        serversBaseInfoService.save(serversBaseInfo);
        return ResultUtils.success();
    }

    /**
     * 修改服务器信息
     * @param id
     * @param serversBaseInfo
     * @return
     */
    @PutMapping("{id}")
    public Result updateServer(@PathVariable String id, @Validated ServersBaseInfo serversBaseInfo) {
        serversBaseInfo.setId(id);
        serversBaseInfo.updateInit();
        serversBaseInfoService.updateById(serversBaseInfo);
        return ResultUtils.success();
    }

    /**
     * 删除服务器
     * @param id
     * @return
     */
    @DeleteMapping("{id}")
    public Result deleteServer(@PathVariable String id) {
        serversBaseInfoService.deleteServer(id);
        return ResultUtils.success();
    }

    /**
     * 根据ID查询服务器基本信息和运行信息
     * @param id
     * @return
     */
    @GetMapping("getServerBaseInfoAndRunInfoById/{id}")
    public Result getServerBaseInfoAndRunInfoById(@PathVariable String id) {
        ServersBaseInfoVO serversBaseInfo = serversBaseInfoService.getServerBaseInfoAndRunInfoById(id);
        return ResultUtils.success(serversBaseInfo);
    }

}
